// 知识点：bind()作用很多，可以直接颠倒参数的顺序，绑定引用的参数必须使用ret函数和cref函数
#include <algorithm>
#include <functional> //必须
#include <iostream>
#include <numeric>
#include <string>
#include <vector>

using namespace std;
using std::placeholders::_1; //必须

bool check_size(const int &s, string::size_type sz) { return sz > s; }

int main(int argc, char **argv) {
  string _string = "MyLove"; //给定一个string
  int a[10] = {5, 5, 6, 8, 5, 4, 9, 5, 2, 4};
  vector<int> vec1(a, a + 10); //利用数组初始化vector

  string::size_type _length = _string.size();
  //使用bind不仅需要头文件，还需要声明命名空间
  cout << "长度小于等于6的字符串有"
       << count_if(vec1.begin(), vec1.end(), bind(check_size, _1, _length))
       << "个";

  return 0;
}
